package com.cy.pj.sys.web响应标准和全局异常处理;

import com.cy.pj.sys.Service.SysLogService;
import com.cy.pj.sys.commom.Util分页查询的工具类.PageUtil;
import com.cy.pj.sys.pojo.SysLog;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/log/")
public class SysLogController {
    @Autowired
    private SysLogService sysLogService; //如果驱动应用了AOP,那么这个耦合的就是底层用JDK创建的SysLogServicelmpl的兄弟实现类

    //写个方法--接收服务消费方传过来的日志
    @PostMapping
    public void doSaveLog(@RequestBody SysLog sysLog) {
        sysLogService.saveLog(sysLog);
    }

    /**
     * 基于id查询日志信息
     *
     * @param
     * @return
     */
    @GetMapping("{id}")
    public JsonResult doFindById(@PathVariable Long id) {
        return new JsonResult(sysLogService.selectByIdService(id));
    }

    @DeleteMapping("{id}")
    public JsonResult doDeleteById(@PathVariable Long... id) {
        sysLogService.deleteLogsService(id);
        return new JsonResult("删除成功");
    }

    /**
     * 基于条件分页查询日志信息
     *
     * @param sysLog
     * @return url:http://localhost/log/
     * http://localhost/log/?username=jason
     * http://localhost/log/?username=jason&status=1
     * http://localhost/log/?pageCurrent=1&pageSize=5
     */
    @GetMapping
    public JsonResult doFindLogs(SysLog sysLog) {
        return new JsonResult(
                PageUtil.startPage()//启动分页查询拦截
                        .doSelectPageInfo(() -> {//分页查询日志信息
                            //调用业务层方法执行查询，查询结果底层会存储到pageInfo对象
                            String a = sysLogService.getClass().getName();
                            System.out.println(a);
                            sysLogService.selectLogsService(sysLog);
                            //假如应用了AOP设计，sysLogService变量指向的是代理对象
                        }));
    }
}
